#include <iostream>
#include <vector>
#include <algorithm>

using std::cin;
using std::cout;
using std::endl;
using std::vector;

const int inf = 1e9;

struct Station {
    int x, y;
    Station(int x = 0, int y = 0): x(x), y(y) {}

    friend std::istream& operator>>(std::istream& lin, Station& station) {
        lin >> station.x >> station.y;
        return lin;
    }
};

int sqr(int x) {
    return x * x;
}

bool reachable(const Station& one, const Station& two, int k) {
    return sqr(one.x - two.x) + sqr(one.y - two.y) <= sqr(k);
}

void dfs(int v, const vector <Station>& stations, vector <bool>& was, int k) {
    was[v] = 1;
    for (int u = 0; u < stations.size(); ++u) {
        if (!was[u]) {
            if (reachable(stations[v], stations[u], k))
                dfs(u, stations, was, k);
        }
    }
}


int main() {
    int n, k;
    cin >> n >> k;
    vector <Station> stations(n);
    for (int i = 0; i < n; ++i) {
        cin >> stations[i];
    }
    vector <bool> was(n, 0);
    dfs(0, stations, was, k);
    if ((*std::min_element(was.begin(), was.end())) == 0)
        cout << "NO";
    else 
        cout << "YES";

}
